The present invention relates to wireless communication and in particular to a method of avoiding potential deadlocks in a Service Data Unit (SDU) discard function for Acknowledged Mode transmission. An example of a conventional SDU discard function is described in 3GPP TS 25.322 V3.15.0 (2003-06), “Radio Link Control (RLC) protocol specification”, called D1 hereafter.
A SDU in a sender is a data block submitted by upper layers to transfer to a peer receiver. SDUs may be segmented into several Radio Link Control layer protocol data units (RLC PDUs) of the same size. Two or more SDUs may also be concatenated within one PDU, depending on the sizes of SDUs and the length of PDUs. When the RLC entity is in acknowledged mode, the PDU is called acknowledged mod data PDU, abbreviated as AMD PDU hereafter.
FIG. 1 is an exemplary diagram of an AMD PDU. The AMD PDU (10) is used to transfer user data and other information. The length of the data part (16) shall be a multiple of 8 bits. The AMD PDU header consists of the first two octets, which contain the “Sequence number” (SN) (12). The RLC header consists of the first two octets and all the octets that contain “Length Indicators” (LI) (14). PAD (18) shown in FIG. 1 indicates padding, which is all the unused space in a PDU. PAD (18) may have any value filled by the Sender to keep the PDU with a pre-determined length. The receiver disregards the content of PAD (18). The HE field (13) and the E fields (15) are not directly related to the present invention so that they are not described herein.
A SDU discard function is used by the sender to discharge RLC PDUs from a RLC PDU buffer, when the transmission of the RLC PDUs does not succeed for a period of time (time-out discard) or for a maximum number of scheduled transmissions (maximum scheduled transmission discard). The time-out discard is not directly related to the present invention. Thus, only maximum scheduled transmission discard is described herein.
Maximum scheduled transmission discard function is enabled by configuring the flag “SDU discard after MaxDAT number of transmissions” to TRUE in D1. This function uses the number of times being scheduled for transmission of an AMD PDU, denoted as MaxDAT hereafter, as a trigger for SDU discard procedure, and is therefore only applicable for acknowledged mode RLC entity. After an AMD PDU has been transmitted for MaxDAT−1 times, if the AMD PDU is scheduled to transmission because of negative acknowledgement, the number of times of scheduled for transmission reaches MaxDAT so that SDUs having segments contained in this AMD PDU shall be discarded. Therefore, the maximum number of transmissions of an AMD PDU is equal to MaxDAT−1.
In acknowledge mode, when SDUs are discarded in a Sender, the information of the discarded SDUs are signaled to the peer receiver so that the receiver can stop receiving AMD PDUs carrying these SDUs and advance its receiving window accordingly. The sender uses a STATUS PDU containing a “Move Receiving Window” super-field (MRW SUFI) to request the receiver to move its receiving window and optionally to indicate the set of SDUs that should be discarded. The SDU discard signaling procedure is called an SDU discard with explicit signaling procedure.
FIG. 2 is a diagram showing the format of a conventional MRW SUFI. The MRW SUFI (20) contains a Type field (22) which indicates the SUFI is a MRW SUFI (20), a LENGTH field (24) indicating the number of SN_MRWi fields, several front SN_MRWi fields (26a, 26b, 26c) where i<LENGTH, a SN_MRWLENGTH field (26) which is the last of the SN_MRWi fields and a NLENGTH field (28). All fields in the MRW SUFI (20) except the SN_MRWLENGTH field (26) and the NLENGTH field (28) are not directly related to this invention and, hence, are not described herein. The NLENGTH field (28) is used together with the SN_MRWLENGTH field (26) to indicate the end of the last RLC SDU to be discarded in the Receiver. NLENGTH (28) indicates which “Length Indicator” in the AMD PDU with “Sequence Number” equal to SN_MRWLENGTH (26) corresponds to the last RLC SDU to be discarded in the Receiver. In particular, NLENGTH=0 indicates that the last discarded SDU ended in the AMD PDU with “Sequence Number” equal to SN_MRWLENGTH−1 and that the first data octet in the AMD PDU with “sequence Number” SN_MRWLENGTH is the first data octet to be reassembled next.
FIG. 3 is an exemplary diagram of two SDUs segmented and concatenated into three AMD PDUs for transmission from a peer sender to a peer receiver. Suppose “SDU discard after MaxDAT number of transmissions” is configured and MaxDAT=4. Suppose that the PDU with SN=0 (30) is positively acknowledged. Further suppose that PDU with SN=1 (32) has been transmitted three times and negatively acknowledged three times, i.e., the number of transmissions of this PDU (32) reaches its maximum allowed value. Therefore, the sender triggers a SDU discard procedure when the PDU (32) is scheduled for transmission when it is negatively acknowledged for the third time. Since Segment 2 of SDU 1 (32a) and Segment 1 of SDU 2 (32b) are included in PDU with SN=1 (32), both SDU 1 and SDU 2 have to be discarded. A MRW SUFI (20) can be constructed and sent to the Receiver.
FIG. 4 is an exemplary diagram of two SDUs carried by three AMD PDUs for transmission from a peer sender to a peer receiver. As shown in FIG. 4, the PDU with SN=1 (42) only consists of a Sequence Number (SN=1) (42a), a Length Indicator (LI=0000000) (42b) indicating that SDU1 ended in the previous PDU (40), a Length Indicator (LI=1111111) (42c) indicating that the remainder of the PDU is padding and PAD (42d) which is the padding itself. No data part or SDU segments are contained in the PDU with SN=1 (42). Suppose also that “SDU discard after MaxDAT number of transmissions” is configured and MaxDAT=4. The PDU with SN=0 (40) is positively acknowledged. Suppose that the PDU with SN=1 (42) has been transmitted three times and negatively acknowledged three times, i.e., the number of transmissions of this PDU (42) reaches its maximum allowed value. Therefore, the sender triggers a SDU discard procedure when this PDU (42) is scheduled for transmission when it is negatively acknowledged for the third time. However, since no SDU segments are included in the PDU with SN=1 (42), no SDU is to be discarded and a MRW SUFI cannot be constructed by the conventional SDU discard function. Consequently, the receiver will not move its receiving window beyond SN=1, while the sender is no longer allowed to retransmit the PDU with SN=1 (42). Both the transmission window at the Sender and the receiving window at the receiver are then blocked at SN=1. A deadlock happens.
Occasionally, lower layers would request PDUs to transmit on a physical layer while there are no PDUs left for transmission in the RLC entity. Under this circumstances, the RLC entity can submit padding PDUs to lower layers to respond to the request. There are two alternatives of the padding PDU in Acknowledged Mode RLC entities. A PDU is considered to be a padding PDU if it is an AMD PDU consisting only of an RLC Header with one “Length Indicator” indicating that the remainder of the PDU is padding and the padding itself. This first kind of padding PDU is called data-formatted padding PDU hereafter because its format is exactly the same as an AMD PDU, which contains data in general. A PDU shall also be considered to be a padding PDU if it is a STATUS PDU consisting only of a NO_MORE SUFI. The second kind of padding PDU is called status-formatted padding PDU because its format is the same as a STATUS PDU, which contains various super fields (SUFI) to provide RLC layer signaling such as acknowledgement, moving the receiving window, or reset. A STATUS PDU contains no sequence number and will not be explicitly acknowledged as received or missed. A NO MORE SUFI is the last SUFI within a STATUS PDU to indicate the end of the SUFIs contained in the STATUS PDU. Bit string after NO MORE SUFI is considered as padding. A STAUS PDU with NO MORE SUFI indicates that there are no RLC signaling messages contained in the STATUS PDU and, thus, the whole STATUS PDU can be used as a padding PDU. The RLC entity can freely choose to submit either data-formatted or status-formatted padding PDU when a padding PDU is needed.
FIG. 5 is an exemplary diagram of two SDUs and one data-formatted padding PDU for transmission from a peer sender to a peer receiver. As shown in FIG. 5, for a PDU with SN=1 (52), the Sender sends a data-formatted padding PDU, which consists of only an RLC Header with Sequence Number field (52a) and one Length Indicator (52b) indicating the remainder of the PDU is padding and PAD (52c) which is the padding itself. Suppose that “SDU discard after MaxDAT number of transmissions” is configured and MaxDAT=4. Suppose that the PDU with SN=0 (50) is positively acknowledged. Further suppose that the PDU with SN=1 (52) has been transmitted three times and negatively acknowledged three times, i.e., the number of transmissions of this PDU reaches its maximum allowed value. Therefore, the sender should trigger a SDU discard procedure. However, since there are no segments of SDUs included in PDU with SN=1 (52), no SDU is to be discarded according to the conventional SDU discard function. Thus, a MRW SUFI cannot be constructed and the receiver will not move its receiving window beyond SN=1 while the Sender is not allowed to retransmit the PDU with SN=1 again. Here, again, both the transmission window of the sender and the receiving window of the receiver will be blocked at SN=1 and a deadlock happens.
Unfortunately, the SDU discard function of the conventional method cannot resolve the previously mentioned deadlock problems.